package com.cgfay.facedetect.engine;

import android.content.Context;

import com.cgfay.facedetect.listener.FaceTrackerCallback;

public interface IFaceTracker {

    /**
     * 设置检测回调
     * @param callback
     * @return
     */
    FaceTrackerBuilder setFaceCallback(FaceTrackerCallback callback);

    /****
     * 准备检测器, 启动检测线程
     */
    void initTracker();

    /**
     * 初始化人脸检测
     * @param context       上下文
     * @param orientation   图像角度
     * @param width         图像宽度
     * @param height        图像高度
     */
    void prepareFaceTracker(Context context, int orientation, int width, int height);

    /**
     * 检测人脸
     * @param data
     * @param width
     * @param height
     */
    void trackFace(byte[] data, int width, int height);

    /*****
     * 销毁检测器，停止检测线程
     */
    void destroyTracker();


    /*****
     * 设置是否是后置摄像头
     */
    IFaceTracker setBackCamera(boolean backCamera);

    /*****
     *  是否允许3D姿态角
     *  @param enable
     */
    IFaceTracker enable3DPose(boolean enable);

    /*****
     * 是否允许区域检测
     */
    IFaceTracker enableROIDetect(boolean enable);

    /**
     * 是否允许106个关键点
     * @param enable
     * @return
     */
    IFaceTracker enable106Points(boolean enable);

    /****
     * 是否允许多人脸检测
     */
    IFaceTracker enableMultiFace(boolean enable);

    /**
     * 是否允许人脸年龄检测
     * @param enable
     * @return
     */
    IFaceTracker enableFaceProperty(boolean enable);

    /**
     * 最小检测人脸大小
     * @param size
     * @return
     */
    IFaceTracker minFaceSize(int size);

    /**
     * 检测时间间隔
     * @param interval
     * @return
     */
    IFaceTracker detectInterval(int interval);

    /**
     * 检测模式
     * @param mode
     * @return
     */
    IFaceTracker trackMode(int mode);
}
